// import com.alibaba.druid.sql.ast.SQLExpr_ptr ;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLSubPartitionBy;
// import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObject;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <list>
#include "../../../../../sql/ast/SQLSubPartitionBy.h"
#include "../../../../../sql/dialect/mysql/ast/MySqlObject.h"

class SQLExpr;
class SQLASTVisitor;
class MySqlASTVisitor;

class MySqlSubPartitionByValue :public SQLSubPartitionBy ,virtual public MySqlObject {
  public:
    SQLExpr_list_ptr  columns;

    MySqlSubPartitionByValue();
  SHAREDOBJECT(MySqlSubPartitionByValue);
    // @Override
    void accept0(SQLASTVisitor_ptr visitor);

    // @Override
    void accept0(MySqlASTVisitor_ptr  visitor) ;

    SQLExpr_list_ptr  getColumns() ;

    void addColumn(SQLExpr_ptr column) ;

    void cloneTo(MySqlSubPartitionByValue_ptr x) ;

    // MySqlSubPartitionByValue* clone() ;
virtual SQLObject_ptr clone();
    BOOL_ptr isPartitionByColumn(long columnNameHashCode64) ;
};
